package ar.unsam.tp1.test

import ar.unsam.tp1.programa.Cantidad
import ar.unsam.tp1.programa.Edad
import ar.unsam.tp1.programa.Lugar
import junit.framework.Assert
import org.junit.Before
import org.junit.Test

class TestCondicion {
	var Edad condEdad1 = new Edad()
	var Edad condEdad2 = new Edad()
	var Lugar condLugar1 = new Lugar
	var Lugar condLugar2 = new Lugar
	var Cantidad condCantidad1 = new Cantidad()
	var Cantidad condCantidad2 = new Cantidad()  

	@Before
	def void init() {
		condEdad1.setEdad(20)
		condEdad2.setEdad(20)
		condLugar1.setLugar("Buenos Aires")
		condLugar2.setLugar("Buenos Aires")
		condCantidad1.setCantidad(25)
		condCantidad2.setCantidad(25)
	}

	@Test
	def void testCompararEdades() {
		Assert::assertEquals(condEdad1.compareTo(condEdad2), true)
		condEdad2.setEdad(21)
		Assert::assertEquals(condEdad1.compareTo(condEdad2), false)
		condEdad1.setAdmiteMayor(true)
		Assert::assertEquals(condEdad1.compareTo(condEdad2), true)
		condEdad2.setEdad(19)
		condEdad1.setAdmiteMenor(true)
		Assert::assertEquals(condEdad1.compareTo(condEdad2), true)
	}

	@Test
	def void testCompararLugares() {
		Assert::assertEquals(condLugar1.compareTo(condLugar2), true)
		condLugar2.setLugar("Capital")
		Assert::assertEquals(condLugar1.compareTo(condLugar2), false)
	}

	@Test
	def void testCompararCantidades() {
		Assert::assertEquals(condCantidad1.compareTo(condCantidad2), true)
		condCantidad2.setCantidad(26)
		Assert::assertEquals(condCantidad1.compareTo(condCantidad2), false)
		condCantidad1.setAdmiteMayor(true)
		Assert::assertEquals(condCantidad1.compareTo(condCantidad2), true)
		condCantidad2.setCantidad(24)
		condCantidad1.setAdmiteMenor(true)
		Assert::assertEquals(condCantidad1.compareTo(condCantidad2), true)
		//A traves de superclase Condicion
		Assert::assertEquals(condCantidad1.compararCon(condCantidad2), true)
		Assert::assertEquals(condEdad1.compararCon(condCantidad2), false)
	}
}
